﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using TankController.Dominio;

namespace TankController
{
    public partial class FormControleTipoD : FormControle, IFormControle
    {
        //private FormPrincipal formPrincipal;

        public FormControleTipoD(FormPrincipal formPrincipal)
            : base(formPrincipal)
        {
            InitializeComponent();

            //this.formPrincipal = formPrincipal;
        }

        private void FormControle_Shown(object sender, EventArgs e)
        {
            AtualizarCampos();
        }

        private void ValidarCampos()
        {
            ucControleEntradaSeguidorReferencia.ValidarCampos();
            ucControleSeguidorReferencia.ValidarCampos();
        }

        private void btnPlay_Click(object sender, EventArgs e)
        {
            try
            {
                ValidarCampos();

                ucControleEntradaSeguidorReferencia.MontarReferencia();
                ucControleSeguidorReferencia.MontarControlador();

                formPrincipal.Play();

                btnPlay.Enabled = false;
                btnPause.Enabled = true;
                btnStop.Enabled = true;
                ucControleEntradaSeguidorReferencia.HabilitarReferencia(false);
                ucControleSeguidorReferencia.HabilitarControlador(false);
            }
            catch (ApplicationException apex)
            {
                MessageBox.Show(apex.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void btnPause_Click(object sender, EventArgs e)
        {

        }

        private void btnStop_Click(object sender, EventArgs e)
        {
            formPrincipal.Stop();

            btnPlay.Enabled = true;
            btnPause.Enabled = false;
            btnStop.Enabled = false;
            ucControleEntradaSeguidorReferencia.HabilitarReferencia(true);
            ucControleSeguidorReferencia.HabilitarControlador(true);
        }

        public void AtualizarCampos()
        {
            ucControleEntradaSeguidorReferencia.AtualizarCampos();
            ucControleSeguidorReferencia.AtualizarCampos();

            btnPlay.Focus();
        }

        private void FormControle_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (Global.Status == Status.Play || Global.Status == Status.Pause)
            {
                e.Cancel = true;

                MessageBox.Show("Não é possível fechar a janela com o sistema em execução.", "ERRO", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
    }
}
